package judger

import (
	"fmt"
	"strings"
)

// Contrast 根据代码完成的结果对结果进行评判
func Contrast(input string, stdin string, time int64, limitTime int64, memory int64, limitMem int64) STATE {
	stdin = strings.ReplaceAll(stdin, "\r", "")
	if time > limitTime {
		return AFG_TO
	}
	if memory > limitMem {
		return AFG_OM
	}

	if compare4AFG_BG(input, stdin) {
		return AFG_AC
	}

	if trim4AFG_WA(input, stdin) {
		return AFG_BG
	}

	return AFG_WA
}

//去除所有的空格之后对内容进行比较 以分辨答案是否错误
func trim4AFG_WA(input string, stdin string) bool {
	ninput := allTrim(input)
	nstdin := allTrim(stdin)

	x := strings.Compare(ninput, nstdin)

	if x != 0 {
		return false
	}
	return true
}

//直接比较 判断是否格式错误
func compare4AFG_BG(input string, stdin string) bool {
	newin := fmt.Sprintf("%s", input)
	x := strings.Compare(newin, stdin)

	if x != 0 {
		return false
	}
	return true
}

//去除空格 回车 制表
func allTrim(input string) string {
	a := strings.Trim(input, " ")
	a = strings.Trim(a, "\r")
	a = strings.Trim(a, "\t")
	a = strings.Trim(a, "\n")
	return a
}
